/** bcmi_frame Stream writer definition.
 *
 *  bcmi_frame Stream writer definition. 
 *  This file is the interface which user call write.
 *
 *  @author : huicong
 *  @date : 2008-10-27
 *
 */

#ifndef _STREAM_WRITER_H
#define _STREAM_WRITER_H

namespace bcmi_frame
{

    /** Basic stream writer. User info will write in this class.
     *	
     * //UNDO
     *
     */
    VIRTUAL_CLASS class StreamWriter
    {
    public:

        StreamWriter()
        {
        }

        virtual ~StreamWriter()
        {
        }

    public:

        /** Major write function. Write data into this class from _buf.
         *	
         *  Major write function. Write data into this class from _buf.
         *
         *  @param [OUT] VOID *_buf : user data container
         *  @param [IN] UINT _size : the length of the data 
         *  @param [OUT] UINT &_actualSize : the actual length write into this class
         *  @return HRESULT : running status
         *
         */
        virtual HRESULT write(IN VOID *_buf, IN UINT _size, OUT UINT &_actualSize) = 0;
    };
};// namespace bcmi_frame

#endif // #ifndef _STREAM_WRITER_H